package ma.moliere.domaine;

import java.util.List;

import ma.moliere.persistance.oe.Anneescolaire;
import ma.moliere.persistance.oe.Enseignant;
import ma.moliere.persistance.oe.Groupe;
import ma.moliere.persistance.oe.Matiere;
import ma.moliere.transverse.vo.ClasseAffichee;
import ma.moliere.transverse.vo.TarifAffiche;

public interface IParametrage {

	ClasseAffichee ajouterClasse(ClasseAffichee pClasse);

	ClasseAffichee modifierClasse(ClasseAffichee pClasse);

	void supprimerClasse(Long id);

	List < ClasseAffichee > rechercherClasses();

	ClasseAffichee rechercherClasseParId(Long id);

	List < Groupe > rechercherGroupePardIdClasse(Long idClasse);

	List < Anneescolaire > rechercherAnnees();

	Anneescolaire rechercherAnneeParId(Long id);

	Anneescolaire rechercherAnneeParLibelle(String libelle);

	void ajouterMatiere(Matiere pMatiere);

	void modifierMatiere(Matiere pMatiere);

	void supprimerModule(Long id);

	List < Matiere > rechercherModules();

	void ajouterEnseignant(Enseignant pEnseignant);

	void modifierEnseignant(Enseignant pEnseignant);

	void supprimerEnseignant(Long id);

	List < Enseignant > rechercherEnseignants();

	/**
	 * Méthode de persistance pour ajout d'un tarif.
	 * 
	 * @param tarif
	 *            : tarif à ajouter.
	 * @return : tarif crée.
	 */
	TarifAffiche ajouter(TarifAffiche tarif);

	/**
	 * Méthode de persistance pour modifier un tarif.
	 * 
	 * @param tarif
	 *            : tarif à modifier
	 * @return tarif modifié.
	 */
	TarifAffiche modifier(TarifAffiche tarif);

	/**
	 * Lister tous les tarifs.
	 * 
	 * @return la liste des tarifs.
	 */
	List < TarifAffiche > rechercherTarifs();

	/**
	 * Rechercher le tarif en vigueur pour une classe.
	 * 
	 * @param classe
	 *            la classe
	 * @return TarifAffiche
	 */
	TarifAffiche rechercherTarif(String classe);

}
